home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / inet / internet-drafts / draft-ietf-wnils-whois-00.txt < prev    next >
Text File  |  1993-03-03  |  16KB  |  366 lines

  1. WNILS Working Group                    Chris Weider
  2. INTERNET-DRAFT                        Merit Network, Inc.
  3.                             Jim Fullton
  4.                             UNC Chapel Hill
  5.                             Simon Spero
  6. 11/10/92                        UNC Chapel Hill
  7.  
  8.  
  9.     Architecture of the Whois++ Index Service
  10.  
  11. Status of this memo:
  12.  
  13. The authors describe an archtecture for indexing in distributed databases,
  14. and apply this to the WHOIS++ protocol.
  15.  
  16.  
  17.         This document is an Internet Draft.  Internet Drafts are working 
  18.         documents of the Internet Engineering Task Force (IETF), its Areas, 
  19.         and its Working Groups. Note that other groups may also distribute
  20.         working documents as Internet Drafts. 
  21.  
  22.         Internet Drafts are draft documents valid for a maximum of six 
  23.         months. Internet Drafts may be updated, replaced, or obsoleted
  24.         by other documents at any time.  It is not appropriate to use
  25.         Internet Drafts as reference material or to cite them other than
  26.         as a "working draft" or "work in progress."
  27.  
  28.         Please check the I-D abstract listing contained in each Internet 
  29.         Draft directory to learn the current status of this or any 
  30.         other Internet Draft.
  31.  
  32.     This Internet Draft expires May 10, 1993.
  33.  
  34. 1. Purpose:
  35.  
  36. The WHOIS++ directory service [GDS, 1992] is intended to provide
  37. a simple, extensible directory service predicated on a template-based
  38. information model and a flexible query language. This document describes
  39. an architecture designed to link together many of these WHOIS++ servers
  40. into a distributed, searchable wide area directory service.
  41.  
  42. 2. Scope:
  43.  
  44. This document details a distributed, easily maintained architecture for
  45. providing a unified index to a large number of distributed WHOIS++
  46. servers. This architecture can be used with systems other than WHOIS++ to
  47. provide a distributed directory service which is also searchable.
  48.  
  49. 3. Motivation and Introduction:
  50.  
  51. It seems clear that with the vast amount of directory information potentially
  52. available on the Internet, it is simply unfeasible to build a centralized
  53. directory to serve all this information. Therefore, we should look at building
  54. a distributed directory service. If we are to distribute the directory service,
  55. the easiest (although not necessarily the best) way of building the directory
  56. service is to build a hierarchy of directory information collection agents.
  57. In this architecture, a directory query is delivered to a certain agent
  58. in the tree, and then handed up or down, as appropriate, so that the query
  59. is delivered to the agent which holds the information which fills the query.
  60. This approach has been tried before, most notably in some implementations of
  61. the X.500 standard. However, there are two major flaws with the approach 
  62. as it has been taken. This new Index Service is designed to fix these flaws.
  63.  
  64. 3.1 The search problem
  65.  
  66. Current implementations of this hierarchical architecture require that a search
  67. query issued at a certain location in the directory agent tree be replicated 
  68. to _all_ subtrees, because there is no way to tell which subtrees might 
  69. contain the desired information. It is obvious that this has rather extreme
  70. scaling problems, and in fact the search facility has been turned off in the
  71. X.500 architecture because of this problem. Our new WHOIS++ architecture
  72. solves this problem by having a set of 'forward information' at each level
  73. of the tree. That is, each level of the tree has some idea of where to look
  74. lower in the tree to find the requested information. Consequently, the
  75. search tree can be pruned enormously, making search feasible at all levels
  76. of the tree. We have chosen a certain set of information to hand up the
  77. tree as forward information; this may or may not be exactly the set of 
  78. information required to build a truly searchable directory. However, it seems
  79. clear that without some sort of forward information, the search problem
  80. becomes intractable.
  81.  
  82. 3.2 The location problem
  83.  
  84. Current implementations of this hierarchical architecture also encode details
  85. about the directory agent hierarchy in the location information for a specific
  86. entry. With search turned off, this requires a user to know exactly how
  87. the hierarchy of servers is laid out and how they are named, which leads to
  88. acrimonious debate about the shape of the name space and really massive
  89. headaches whenever it becomes apparant that the current namespace is unsuited
  90. to the current usages and must be changed. The new Index Service gets around
  91. this by a) not enforcing a true hierarchy on the directory agents, b) 
  92. dissociating the directory service from the information served, and c)
  93. allowing new hierarchies to be built whenever necessary, without destroying
  94. the hierarchies already in place. Thus a user does not need to know in 
  95. advance where in the hierarchy the information served is contained, and the
  96. information a user enters to guide the search does not ever have to explicitly
  97. show up in the hierarchy. Although there are provisions in the WHOIS++ 
  98. query syntax to watch the directory service as it hand the query around, and
  99. consequently to divine the structure of the directory service hierarchy,
  100. it really is not relevant to the user, and does not ever have to be taken
  101. into consideration.
  102.  
  103. 3.3 The Yellow Pages problem
  104.  
  105. Current implementations of this hierarchical architecture have also been
  106. unsuited to solving the Yellow Pages problem; that is, the problem of 
  107. easily and flexibly building special-purpose directories (say of 
  108. molecular biologists) and of automatically maintaining these directories
  109. once they have been built. In particular with the current systems, one has
  110. to build into the name space the attributes appropriate to the new directory. 
  111. Since our new Index Service very easily allows directory servers to pick and
  112. choose between information proffered by a given entry server, and because we
  113. have an architecture which allows for automatic polling of data, Yellow 
  114. Pages capabilities fall very naturally out of the design. Although the 
  115. ability to search all levels of the tree(s) gets us a long way towards the
  116. Yellow Pages, it is this capacity to locate, gather, and maintain information
  117. in a distributed and selective way that really solves the problem.
  118.  
  119.  
  120. 4. Components of the Index Service:
  121.  
  122. 4.1 WHOIS++ servers
  123.  
  124. The whois++ service is described in [GDS, 1992]. As that service specifies
  125. only the query language, the information model, and the server responses,
  126. whois++ services can be provided by a wide variety of databases and directory
  127. services. However, to participate in the Index Service, that underlying
  128. database must also be able to generate a 'centroid' for the data it serves.
  129.  
  130. 4.2 Centroids as forward knowledge
  131.  
  132. The centroid of a server is comprised of a list of the templates and 
  133. attributes used by that server, and a word list for each attribute.
  134. The word list for a given attribute contains one occurrence of every 
  135. word which appears at least once in that attribute in some record in that 
  136. server's data, and nothing else.
  137.  
  138. For example, if a whois++ server contains exactly three records, as follows:
  139.  
  140. Record 1            Record 2
  141. Template: User            Template: User
  142. First Name: John         First Name: Joe
  143. Last Name: Smith        Last Name: Smith
  144. Favourite Drink: Labatt Beer    Favourite Drink: Molson Beer
  145.  
  146. Record 3
  147. Template: Domain
  148. Domain Name: foo.edu
  149. Contact Name: Mike Foobar
  150.  
  151. the centroid for this server would be
  152.  
  153. Template:       User
  154. First Name:       Joe
  155.           John
  156. Last Name:       Smith
  157. Favourite Drink:  Beer
  158.           Labatt
  159.           Molson
  160.  
  161. Template:      Domain
  162. Domain Name:      foo.edu
  163. Contact Name:     Mike
  164.           Foobar
  165.           
  166. It is this information which is handed up the tree to provide forward knowledge.
  167. As we mention above, this may not turn out to be the ideal solution for
  168. forward knowledge, and we suspect that there may be a number of different
  169. sets of forward knowledge used in the Index Service. However, the directory
  170. architecture is in a very real sense independent of what types of forward
  171. knowledge are handed around, and it is entirely possible to build a 
  172. unified directory which uses many types of forward knowledge.
  173.          
  174.  
  175. 4.3 Index servers and Index server Architecture
  176.  
  177. A whois++ index server collects and collates the centroids (or other forward 
  178. knowledge) of either a number of whois++ servers or of a number of other index
  179. servers. An index server must be able to generate a centroid for the
  180. information it contains.
  181.  
  182. 4.3.1 Queries to index servers
  183.  
  184. An index server will take a query in standard whois++ format, search its
  185. collections of centroids, determine which servers hold records which may fill
  186. that query, and then forward the query to the appropriate servers.
  187.  
  188. 4.3.2 Index server distribution model and centroid propogation
  189.  
  190. The diagram below illustrates how a tree of index servers is created for
  191. a set of whois++ servers.
  192.  
  193.   whois++        index            index
  194.   servers        servers            servers
  195.             for            for
  196.   _______        whois++            lower-level
  197.  |       |              servers            index servers
  198.  |   A   |__
  199.  |_______|  \            _______
  200.          \----------|       |
  201.   _______               |   D   |__             ______
  202.  |       |   /----------|_______|  \           |      |
  203.  |   B   |__/                       \----------|      |
  204.  |_______|                                     |  F   |
  205.                     /----------|______|
  206.                    /
  207.   _______                _______  /
  208.  |       |              |       |-
  209.  |   C   |--------------|   E   |
  210.  |_______|              |_______|
  211.  
  212.  
  213. In the portion of the index tree shown above, whois++ servers A and B hand their
  214. centroids up to index server D, whois++ server C hands its centroid up to
  215. index server E, and index servers D and E hand their centroids up to index 
  216. server F. 
  217.  
  218. The number of levels of index servers, and the number of index servers at each
  219. level, will depend on the number of whois++ servers deployed, and the response
  220. time of individual layers of the server tree. These numbers will have to 
  221. be determined in the field.
  222.  
  223. 4.3.4 Centroid propogation and changes to centroids
  224.  
  225. Centroid propogation is initiated by an authenticated POLL command (sec. 4.2).
  226. The format of the POLL command allows the poller to request the centroid of
  227. any or all templates and attributes held by the polled server. After the
  228. polled server has authenticated the poller, it determines which of the 
  229. requested centroids the poller is allowed to request, and then issues a
  230. CENTROID-CHANGES report (sec. 4.3) to transmit the data. When the poller
  231. receives the CENTROID-CHANGES report, it can authenticate the pollee to
  232. determine whether to add the centroid changes to its data. Additionally, if
  233. a given pollee knows what pollers hold centroids from the pollee, it can
  234. signal to those pollers the fact that its centroid has changed by issuing
  235. a DATA-CHANGED command. The poller can then determine if and when to 
  236. issue a new POLL request to get the updated information. The DATA-CHANGED
  237. command is included in this protocol to allow 'interactive' updating of
  238. critical information.
  239.  
  240. 4.3.5 Query handling and passing algorithm
  241.  
  242. When an index server receives a query, it searches its collection of centroids,
  243. and determines which servers hold records which may fill that query. As
  244. whois++ becomes widely deployed, it is expected that some index servers
  245. may specialize in indexing certain whois++ templates or perhaps even
  246. certain fields within those templates. If an index server obtains a match
  247. with the query _for those template fields and attributes the server indexes_,
  248. it is to be considered a match for the purpose of forwarding the query.
  249. When the index server has completed its search to match the query to a 
  250. server, it then forwards the request as shown in 5.4.
  251.  
  252. Each server in the chain can then use the authentication information
  253. included in the FORWARDED-QUERY command to determine whether to continue
  254. forwarding the query.
  255.  
  256. Also, a whois++ query can specify the 'trace' option, which sends to
  257. the user a string containing the IANA handle and an identification
  258. string for each index server the query is handed to.
  259.  
  260. 5. Syntax for operations of the Index Service:
  261.  
  262. 5.1 Data changed syntax
  263.  
  264. The data changed template look like this:
  265.  
  266. DATA-CHANGED:
  267.    Version-number: // version number of index service software, used to insure
  268.            // compatibility
  269.    Time-of-latest-centroid-change: // time stamp of latest centroid change, GMT
  270.    Time-of-message-generation: // time when this message was generated, GMT
  271.    Server-handle: // IANA unique identifier for this server
  272.    Best-time-to-poll: // For heavily used servers, this will identify when
  273.               // the server is likely to be lightly loaded
  274.               // so that response to the poll will be speedy, GMT
  275.    Authentication-type: // Type of authentication used by server, or NONE
  276.    Authentication-data: // data for authentication 
  277. END DATA-CHANGED // This line must be used to terminate the data changed 
  278.          // message
  279.  
  280. 5.2 Polling syntax
  281.  
  282. POLL:
  283.    Version-number: // version number of poller's index software, used to
  284.            // insure compatibility
  285.    Start-time: // give me all the centroid changes starting at this time, GMT
  286.    End-time: // ending at this time, GMT
  287.    Template: // a standard whois++ template name, or the keyword ALL, for a
  288.          // full update.
  289.    Field:    // used to limit centroid update information to specific fields,
  290.          // is either a specific field name, a list of field names, 
  291.              // or the keyword ALL
  292.    Server-handle: // IANA unique identifier for the polling server. 
  293.           // this handle may optionally be cached by the polled
  294.           // server to announce future changes
  295.    Authentication-type: // Type of authentication used by poller, or NONE
  296.    Authentication-data: // Data for authentication
  297. END POLL     // This line must by used to terminate the poll message
  298.  
  299. 5.3 Centroid change report
  300.  
  301. CENTROID-CHANGES:
  302.    Version-number: // version number of pollee's index software, used to
  303.            // insure compatibility
  304.    Start-time: // change list starting time, GMT
  305.    End-time: // change list ending time, GMT
  306.    Server-handle: // IANA unique identifier of the responding server
  307.    Authentication-type: // Type of authentication used by pollee, or NONE
  308.    Authentication-data: // Data for authentication
  309.    Compression-type: // Type of compression used on the data, or NONE
  310.    Size-of-compressed-data: // size of compressed data if compression is used
  311.    Operation: // One of 3 keywords: ADD, DELETE, FULL
  312.           // ADD - add these entries to the centroid for this server
  313.               // DELETE - delete these entries from the centroid of this
  314.               // server
  315.           // FULL - the full centroid as of end-time follows
  316. Multiple occurrences of the following block of fields:
  317.     Template: // a standard whois++ template name
  318.     Field: // a field name within that template
  319.     Data: // the word list itself, one per line, cr/lf terminated
  320. end of multiply repeated block
  321.     END CENTROID-CHANGES // This line must be used to terminate the centroid
  322.              // change report
  323.  
  324. 5.4 Forwarded query
  325.  
  326. FORWARDED-QUERY:
  327.    Version-number: // version number of forwarder's index software, used to 
  328.            // insure compatibility
  329.    Forwarded-From: // IANA unique identifier of the server forwarding query 
  330.    Forwarded-time: // time this query forwarded, GMT (used for debugging)
  331.    Trace-option: // YES if query has 'trace' option listed, NO if not.
  332.          // used at message reception time to generate trace information
  333.    Query-origination-address: // address of origin of query
  334.    Body-of-Query: // The original query goes here
  335.    Authentication-type: // Type of authentication used by queryer
  336.    Authentication-data: // Data for authentication
  337.    END FORWARDED-QUERY // This line must be used to terminate the body of the
  338.                 // query
  339.  
  340. 6 Author's Addresses
  341.  
  342. Chris Weider
  343. clw@merit.edu
  344. Industrial Technology Institute, Pod G
  345. 2901 Hubbard Rd, 
  346. Ann Arbor, MI 48105
  347. O: (313) 747-2730
  348. F: (313) 747-3185
  349.  
  350. Jim Fullton
  351. fullton@mdewey.ga.unc.edu
  352. 310 Wilson Library CB #3460
  353. University of North Carolina
  354. Chapel Hill, NC 27599-3460
  355. O: (919) 962-9107
  356. F: (919) 962-5604
  357.  
  358. Simon Spero
  359. ses@sunsite.unc.edu
  360. 310 Wilson Library CB #3460
  361. University of North Carolina
  362. Chapel Hill, NC 27599-3460
  363. O: (919) 962-9107
  364. F: (919) 962-5604
  365.    
  366.